package com.automapper.execute.keygen;

import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator;
import org.apache.ibatis.mapping.MappedStatement;

import com.automapper.constants.ParameterConstants;

/**
 * 实现批量插入ID回写
 * mybatis3.3.1之前的版本使用
 */
//@Deprecated
//public class MultipleJdbc3KeyGenerator extends Jdbc3KeyGenerator {

//    @Override
//    public void processAfter(Executor executor, MappedStatement ms, Statement stmt, Object parameter) {
//        super.processBatch(ms, stmt, getParameters(parameter));
//    }

    //将@Param参数转换成List<Map<String,Object>>, key=@Param的名称, value=参数的对象
//    private List<Object> getParameters(Object parameter) {
//    	Map<String, Object> map;
//    	Map parameterMap = (Map) parameter;
//    	List<Object> list = new ArrayList<>();
//    	Object object =  parameterMap.get(ParameterConstants.PARAM);
//	    if (object instanceof List) {
//	    	List<Object> tmp = (List<Object>) object;
//	    	for (Object obj : tmp) {
//	    		map = new HashMap<>();
//		    	map.put(ParameterConstants.PARAM, obj);
//		    	list.add(map);
//	    	}
//	    } else {
//	    	map = new HashMap<>();
//	    	map.put(ParameterConstants.PARAM, object);
//	    	list.add(map);
//	    }
//	    return list;
//    }
//}
